package com.fauks.se.other;

import java.math.BigDecimal;

public class BigDecimalTest {
    public static void main(String[] args) {

        //一般使用字符串初始化，防止精度丢失
        BigDecimal b1 = new BigDecimal("12.33");

        BigDecimal b2 = new BigDecimal("7");

        //+
        System.out.println(b1.add(b2));
        //-
        System.out.println(b1.subtract(b2));
        //*
        System.out.println(b1.multiply(b2));
        //除 在除不尽的时候BigDecimal会报错，因为他不知道精度
        //System.out.println(b1.divide(b2));
        //可以为除法指定要保留的小数位,ROUND_HALF_DOWN 四舍五入
        System.out.println(b1.divide(b2, 2, BigDecimal.ROUND_HALF_DOWN));

        BigDecimal f1 = new BigDecimal(12.3f);
        BigDecimal f2 = new BigDecimal(12.312f);
        //如果用double或float初始化精度会丢失，相减得到错误的结果 -0.01200008392333984375
        BigDecimal subtract = f1.subtract(f2);
        System.out.println(subtract);
        //可以为BigDecimal设置精度
        //保留一位小数
        BigDecimal bigDecimal = subtract.setScale(1, BigDecimal.ROUND_HALF_DOWN);
        System.out.println(bigDecimal);
    }
}
